/**
 * bcryptjs 模拟实现模块
 * @author HalRui
 * @version 1.0.0
 * @description bcryptjs的模拟实现，用于在无法安装依赖时提供基本的密码加密和验证功能
 * @date 2025年9月27日
 */

// bcryptjs 的模拟实现，用于在无法安装依赖时提供基本功能
// 注意：这只是一个临时解决方案，生产环境请使用真正的bcryptjs

module.exports = {
    genSalt: async function(rounds = 10) {
        // 模拟生成salt
        return 'mock_salt_' + Math.random().toString(36).substring(2, 15);
    },
    
    hash: async function(password, salt) {
        // 模拟密码哈希
        return 'hashed_' + password + '_' + salt;
    },
    
    compare: async function(password, hashedPassword) {
        // 模拟密码比较 - 临时支持明文比较以保持兼容性
        if (hashedPassword.startsWith('hashed_')) {
            return hashedPassword.includes(password);
        }
        // 如果数据库中的密码是明文（旧数据），直接比较
        return password === hashedPassword;
    },
    
    genSaltSync: function(rounds = 10) {
        return 'mock_salt_' + Math.random().toString(36).substring(2, 15);
    },
    
    hashSync: function(password, salt) {
        return 'hashed_' + password + '_' + salt;
    },
    
    compareSync: function(password, hashedPassword) {
        if (hashedPassword.startsWith('hashed_')) {
            return hashedPassword.includes(password);
        }
        return password === hashedPassword;
    }
};